﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using DECOR.BL.BC;
using DECOR.BL.BE;
using Newtonsoft.Json;
using System.Collections.Specialized;
using System.Web.Script.Serialization;

namespace DECOR.Touchapp
{
    public partial class buscarClientes : System.Web.UI.Page
    {
        string gvSectorVal = "00";
        string gvGrpVendVal = "100";
        string codigoCliente = ""; //viene como parametro
        string nombreCliente = ""; //viene como parametro
        string numeroDocumento = ""; //viene como parametro

        string Json = "";
        string pRetval = "";
        string canal = ""; //viene como parametro
        string mail = ""; //viene como parametro
        string vendedor2 = ""; // viene como parametro
        string vendedor3 = ""; // viene como parametro
        string codProfesional = "";
        string nomProfesional = "";
        string dirProfesional = "";
        string codPProfesional = "";
        string desPProfesional = "";
        string telProfesional = "";
        string codProfesional2 = "";
        string nomProfesional2 = "";
        string dirProfesional2 = "";
        string codPProfesional2 = "";
        string desPProfesional2 = "";
        string telProfesional2 = "";

        PedidoBE objPedido = new PedidoBE();
        ClienteBE objCliente = new ClienteBE();
        List<GenericBE> lstOrgVtas = null;
        List<GenericBE> lstCanalDist = null;

        string DirCli = ""; string RucCli = ""; string CondExp = "";
        string indiceCondicionesPago = ""; string NomVendedor1 = "";
        string CodVendedor1 = ""; string CodSolicitante = ""; string CodDestMerc = "";
        string CodDestFact = ""; string NomSolicitante = "";
        string DirSolicitante = ""; string CodpSolicitante = ""; string TelSolicitante = "";
        string NifSolicitante = ""; string NomDestMerc = ""; string DirDestMerc = "";
        string CodpDestMerc = ""; string TelDestMerc = ""; 
        string NomDestFact = ""; string DirDestFact = ""; string CodpDestFact = "";
        string TelDestFact = ""; string CodResPago = ""; string NomResPago = "";
        string DirResPago = ""; string CodpResPago = ""; string TelResPago = "";
        string NifResPago = "";
        //verificar como carga
        string CodAgTrans = ""; string NomAgTrans = ""; string DirAgTrans = "";
        string CodpAgTrans = ""; string TelAgTrans = ""; string NifAgTrans = "";
        string Profesional = "";
        string dni = ""; //para la búsqueda del cliente reniec.
        string mensajeExcepcion = string.Empty;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {
                
            }
            else
            {
                Profesional = Request.Params["Profesional"] != "" ? Request.Params["Profesional"] : "";
                codigoCliente = Request.Params["codigoClienteA"] != null ? Request.Params["codigoClienteA"] : "";
                dni = Request.Params["dni"] != null ? Request.Params["dni"] : "";
                //string nombre = Request.Params["nombre"] != null ? Request.Params["nombre"] : "";
                //string apepat = Request.Params["apepat"] != null ? Request.Params["apepat"] : "";
                //string apemat = Request.Params["apemat"] != null ? Request.Params["apemat"] : "";
                
                if (Profesional == "Profesional")
                {
                    pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, \"profesionales\": {2} ";
                    pRetval += "}";

                    string nombreProfesional = Request.Params["nombreCliente"] != "" ? Request.Params["nombreCliente"] : "";
                    buscaProfesionales(nombreProfesional);
                }
                else if ((dni != null && dni != ""))// || (nombre != "" && apemat != "" && apepat != "") )
                {
                    pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, \"objCliente\": {2}, \"listCliPregResp\": {3} ";
                    pRetval += "}";
                    ClienteBE objCliente = ClienteBC.Instance.busquedaClienteReniec(dni, "", "", "", out mensajeExcepcion);
                    if (mensajeExcepcion == "")
                    {
                        if (objCliente != null && objCliente.CODIG != null)
                        {
                            Json = JsonConvert.SerializeObject(objCliente, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
                            pRetval = pRetval.Replace("{0}", "true");
                            pRetval = pRetval.Replace("{1}", "");
                            pRetval = pRetval.Replace("{2}", Json);

                            List<ClienteBE> listCliPregRes = ClienteBC.Instance.busquedaClientePregRep(dni);
                            if (listCliPregRes.Count > 0)
                            {
                                Json = JsonConvert.SerializeObject(listCliPregRes, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
                                pRetval = pRetval.Replace("{3}", Json);
                            }
                            else
                            {
                                pRetval = pRetval.Replace("{3}", "[]");
                            }
                        }
                        else
                        {
                            pRetval = pRetval.Replace("{0}", "false");
                            pRetval = pRetval.Replace("{1}", "No se encontró información para el dni ingresado.");
                            pRetval = pRetval.Replace("{2}", "[]");
                            pRetval = pRetval.Replace("{3}", "[]");
                        }
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{0}", "false");
                        pRetval = pRetval.Replace("{1}", "Confirme nuevamente la operación por favor.");
                        pRetval = pRetval.Replace("{2}", "[]");
                        pRetval = pRetval.Replace("{3}", "[]");
                    }
                     
                }
                else
                {
                    if (string.IsNullOrEmpty(codigoCliente))
                    {
                        pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, \"lstClientes\": {2} ";
                        pRetval += "}";

                        CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                        nombreCliente = Request.Params["nombreCliente"] != null ? Request.Params["nombreCliente"] : "";
                        codigoCliente = Request.Params["rucdni"] != null ? Request.Params["rucdni"] : "";
                        CargarClientes(nombreCliente, numeroDocumento, codigoCliente);
                    }
                    else
                    {
                        CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)

                        nombreCliente = Request.Params["nombreCliente"] != null ? Request.Params["nombreCliente"] : "";
                        canal = Request.Params["CanalDist"] != null ? Request.Params["CanalDist"] : "";

                        pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, \"codigoCliente\": \"{2}\", ";
                        pRetval += "\"nombreCliente\": \"{3}\", \"DirCli\": \"{4}\", ";
                        pRetval += "\"RucCli\": \"{5}\", \"lstOrgVtas\": {6}, ";
                        pRetval += "\"lstCanalDist\": {7}, \"CondExp\": \"{8}\", ";
                        pRetval += "\"indiceCondicionesPago\": \"{9}\", \"NomVendedor1\": \"{10}\", ";
                        pRetval += "\"CodVendedor1\": \"{11}\", \"Correo\": \"{12}\", ";
                        pRetval += "\"CodSolicitante\": \"{13}\", \"CodDestMerc\": \"{14}\", ";
                        pRetval += "\"CodDestFact\": \"{15}\", \"CodResPago\": \"{16}\", ";
                        pRetval += "\"NomSolicitante\": \"{17}\", \"DirSolicitante\": \"{18}\", ";
                        pRetval += "\"CodpSolicitante\": \"{19}\", \"TelSolicitante\": \"{20}\", ";
                        pRetval += "\"NifSolicitante\": \"{21}\", \"NomDestMerc\": \"{22}\", ";
                        pRetval += "\"DirDestMerc\": \"{23}\", \"CodpDestMerc\": \"{24}\", ";
                        pRetval += "\"TelDestMerc\": \"{25}\", ";
                        pRetval += "\"NomDestFact\": \"{27}\", \"DirDestFact\": \"{28}\", ";
                        pRetval += "\"CodpDestFact\": \"{29}\", \"TelDestFact\": \"{30}\", ";
                        pRetval += "\"NomResPago\": \"{32}\", ";
                        pRetval += "\"DirResPago\": \"{33}\", \"CodpResPago\": \"{34}\", ";
                        pRetval += "\"TelResPago\": \"{35}\", \"NifResPago\": \"{36}\", ";
                        pRetval += "\"Interlocutores\": {37}, ";
                        pRetval += "\"Eventual\": \"{38}\" ";
                        pRetval += "}";

                        SeleccionarCliente();
                    }
                }

                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void CargarClientes(string prefixText, string numeroDoc, string numeroDeud)
        { 
            //asignamos el valor 15 para el limite q va a devolver la consulta
            int count = 15;
            List<ClienteBE> lstClientes = ClienteBC.Instance.busquedaCliente(prefixText, numeroDoc, numeroDeud);
            List<Clientes> lst = new List<Clientes>();
            int total = lstClientes.Count < count ? lstClientes.Count : count;
            for (int i = 0; i < total; i++)
            {
                Clientes obj = new Clientes();
                obj.codigo = lstClientes[i].Codigo;
                obj.nombrecliente = lstClientes[i].Descripcion.Length > 0 ? lstClientes[i].Descripcion : " ";
                lst.Add(obj);
            }

            if (lstClientes.Count > 0 || lstClientes != null)
            {
                if (lst.Count > 0)
                {
                    Json = JsonConvert.SerializeObject(lst, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include });
                    pRetval = pRetval.Replace("{0}", "true");
                    pRetval = pRetval.Replace("{1}", "");
                    pRetval = pRetval.Replace("{2}", Json);
                }
                else
                {
                    pRetval = pRetval.Replace("{0}", "false");
                    pRetval = pRetval.Replace("{1}", "No se encontraron registros.");
                    pRetval = pRetval.Replace("{2}", "null");
                }
            }
            else
            {
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "No se encontraron registros.");
                pRetval = pRetval.Replace("{2}", "null");
            }
        }

        private void SeleccionarCliente()
        {
            objCliente = ClienteBC.Instance.leer(codigoCliente);            

            if (objCliente == null)
            {
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "No se encontró el cliente.");
                return;
            }
            else
            {
                codigoCliente = objCliente == null ? "" : objCliente.Codigo;
                nombreCliente = objCliente == null ? "" : objCliente.Descripcion;
                DirCli = objCliente == null ? "" : objCliente.DireccionCompleta;
                RucCli = objCliente == null ? "" : objCliente.Ruc;

                pRetval = pRetval.Replace("{0}", "true");
                pRetval = pRetval.Replace("{1}", "");
                pRetval = pRetval.Replace("{2}", codigoCliente);
                pRetval = pRetval.Replace("{3}", nombreCliente);
                pRetval = pRetval.Replace("{4}", DirCli);
                pRetval = pRetval.Replace("{5}", RucCli);
                pRetval = pRetval.Replace("{8}", "");
                pRetval = pRetval.Replace("{38}", objCliente.Eventual.ToString());
            }


            this.cargarInfoCliente();
            if (objCliente != null)
            {
                this.cargarInterlocutores();
                this.guardaInterlocutores();
            }
            //this.guardaPedido();
            //this.buscaPrecios();
        }

        private void cargarInfoCliente()
        {
            //cargar data de Organización de Ventas
            if (objCliente != null)
            {
                lstOrgVtas = new List<GenericBE>();
                lstOrgVtas = ClienteBC.Instance.listaOrgVtas(codigoCliente);
                if (lstOrgVtas.Count > 0 && lstOrgVtas != null)
                {
                    Json = JsonConvert.SerializeObject(lstOrgVtas);
                    pRetval = pRetval.Replace("{6}", Json);
                }
                else
                {
                    pRetval = pRetval.Replace("{6}", "null");
                }
                                
                if (lstOrgVtas.Count > 0)
                {
                    lstCanalDist = ClienteBC.Instance.listaCanalDist(codigoCliente, lstOrgVtas[0].Codigo);
                    if (lstCanalDist.Count > 0 && lstCanalDist != null)
                    {
                        Json = JsonConvert.SerializeObject(lstCanalDist);
                        pRetval = pRetval.Replace("{7}", Json);

                        if (lstCanalDist[0].Codigo.Equals("10"))
                        {
                            try
                            {
                                CondExp = ParametroBC.Instance.getParamValue("LprioCanal10");
                                pRetval = pRetval.Replace("{8}", CondExp);
                            }
                            catch { }
                        }
                    }
                    else
                    {
                        pRetval = pRetval.Replace("{7}", "null");
                    }
                }

                //cargar cond pago y cond exp
                string pCondPago = "", pCondExp = "";
                ClienteBC.Instance.infoClienteNac(codigoCliente, lstOrgVtas.Count > 0 ? lstOrgVtas[0].Codigo : "", lstCanalDist != null ? lstCanalDist[0].Codigo : "", gvSectorVal, out pCondPago, out pCondExp);
                //capturamos la lista de condiciones de pago
                List<GenericBE> lstDenom = new List<GenericBE>();
                List<GenericBE> lstMoneda = new List<GenericBE>();
                List<GenericBE> lstMotivoBloq = new List<GenericBE>();
                List<GenericBE> lstClaseDoc = new List<GenericBE>();
                List<GenericBE> lstRFACT = new List<GenericBE>();
                List<GenericBE> lstSTATU = new List<GenericBE>();
                List<GenericBE> lstTFPLU = new List<GenericBE>();
                List<GenericBE> lstCPag = new List<GenericBE>();
                ParametroBC.Instance.get_Param_PFact(ref  lstDenom, ref  lstMoneda,
                                                            ref lstMotivoBloq, ref lstClaseDoc, ref lstRFACT,
                                                            ref  lstSTATU, ref lstTFPLU, ref lstCPag);

                try
                {
                    int i = 0;
                    for (; i < lstCPag.Count - 1; i++)
                    {
                        if (lstCPag[i].Codigo.Equals(pCondPago)) { break; }
                    }
                    indiceCondicionesPago = i.ToString();
                    pRetval = pRetval.Replace("{9}", pCondPago);
                }
                catch //(Exception ex) 
                { 
                    string msj = "Cond. pago asignada al cliente: " + pCondPago + " no existe.\r\n";
                    pRetval = pRetval.Replace("{1}", msj);
                }
            }
            else //si no existe el cliente seleccionado:
            {
                List<GenericBE> lst = new List<GenericBE>();
                Json = JsonConvert.SerializeObject(lst);
                lstOrgVtas = lst;
                lstCanalDist = lst;
                pRetval = pRetval.Replace("{6}", Json);
                pRetval = pRetval.Replace("{7}", Json);

                CondExp = ParametroBC.Instance.getParamValue("CondExpDefault");
                pRetval = pRetval.Replace("{8}", CondExp);
            }
            //cargar Encargado Comercial
            this.buscarEncargadoComercial();
        }

        private void buscarEncargadoComercial()
        {
            if (objCliente != null && string.IsNullOrEmpty(canal))
            {
                PersonaBE pObjPersona = ClienteBC.Instance.buscaVendedor(codigoCliente, lstOrgVtas != null ? lstOrgVtas[0].Codigo : "", canal);
                if (pObjPersona != null)
                {
                    NomVendedor1 = pObjPersona.Descripcion;
                    CodVendedor1 = Request.Params["CodigoVendedor"] != null ? Request.Params["CodigoVendedor"] : ""; //pObjPersona.CodPersona;
                    pRetval = pRetval.Replace("{10}", pObjPersona.Descripcion);
                    pRetval = pRetval.Replace("{11}", pObjPersona.CodPersona);
                }
                else
                {
                    pRetval = pRetval.Replace("{10}", "");
                    pRetval = pRetval.Replace("{11}", "");
                }
            }
            else
            {
                PersonaBE pObjPersona = ClienteBC.Instance.buscaVendedor(codigoCliente, lstOrgVtas != null ? lstOrgVtas[0].Codigo : "", canal);
                if (pObjPersona != null)
                {
                    NomVendedor1 = pObjPersona.Descripcion;
                    CodVendedor1 = Request.Params["CodigoVendedor"] != null ? Request.Params["CodigoVendedor"] : ""; //pObjPersona.CodPersona;
                    pRetval = pRetval.Replace("{10}", pObjPersona.Descripcion);
                    pRetval = pRetval.Replace("{11}", pObjPersona.CodPersona);
                }
                else
                {
                    pRetval = pRetval.Replace("{10}", Request.Params["Descripcion"]);
                    pRetval = pRetval.Replace("{11}", Request.Params["CodigoVendedor"]);
                }
            }
        }

        private void cargarInterlocutores()
        {
            if (objCliente != null && objCliente.Codigo != null)
            {                
                if (string.IsNullOrEmpty(mail))
                {
                    pRetval = pRetval.Replace("{12}", mail);
                }
                else
                {
                    pRetval = pRetval.Replace("{12}", "");
                }
                if (objCliente.Eventual)
                {
                    CodSolicitante = objCliente.Codigo;
                    CodDestMerc = objCliente.Codigo;
                    CodDestFact = objCliente.Codigo;
                    CodResPago = objCliente.Codigo;
                    pRetval = pRetval.Replace("{13}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{14}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{15}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{16}", objCliente.Codigo);
                }
                else
                {
                    CodSolicitante = objCliente.Codigo;
                    NomSolicitante = objCliente.Descripcion;
                    DirSolicitante = objCliente.Direccion;
                    pRetval = pRetval.Replace("{13}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{17}", objCliente.Descripcion);
                    pRetval = pRetval.Replace("{18}", objCliente.Direccion);

                    try
                    {
                        CodpSolicitante = objCliente.CodigoPostal;
                        pRetval = pRetval.Replace("{19}", objCliente.CodigoPostal);
                    }
                    catch { pRetval = pRetval.Replace("{19}", ""); }

                    TelSolicitante = objCliente.Telefono;
                    NifSolicitante = objCliente.Ruc;
                    CodDestMerc = objCliente.Codigo;
                    NomDestMerc = objCliente.Descripcion;
                    DirDestMerc = objCliente.Direccion;

                    pRetval = pRetval.Replace("{20}", objCliente.Telefono);
                    pRetval = pRetval.Replace("{21}", objCliente.Ruc);
                    pRetval = pRetval.Replace("{14}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{22}", objCliente.Descripcion);
                    pRetval = pRetval.Replace("{23}", objCliente.Direccion);

                    try
                    {
                        CodpDestMerc = objCliente.CodigoPostal;
                        pRetval = pRetval.Replace("{24}", objCliente.CodigoPostal);
                    }
                    catch { pRetval = pRetval.Replace("{24}", ""); }

                    TelDestMerc = objCliente.Telefono;
                    CodDestFact = objCliente.Codigo;
                    NomDestFact = objCliente.Descripcion;
                    DirDestFact = objCliente.Direccion;

                    pRetval = pRetval.Replace("{25}", objCliente.Telefono);
                    pRetval = pRetval.Replace("{15}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{27}", objCliente.Descripcion);
                    pRetval = pRetval.Replace("{28}", objCliente.Direccion);

                    try
                    {
                        CodpDestFact = objCliente.CodigoPostal;
                        pRetval = pRetval.Replace("{29}", objCliente.CodigoPostal);
                    }
                    catch { pRetval = pRetval.Replace("{29}", ""); }

                    TelDestFact = objCliente.Telefono;
                    CodResPago = objCliente.Codigo;
                    NomResPago = objCliente.Descripcion;
                    DirResPago = objCliente.Direccion;

                    pRetval = pRetval.Replace("{30}", objCliente.Telefono);
                    pRetval = pRetval.Replace("{16}", objCliente.Codigo);
                    pRetval = pRetval.Replace("{32}", objCliente.Descripcion);
                    pRetval = pRetval.Replace("{33}", objCliente.Direccion);

                    try
                    {
                        CodpResPago = objCliente.CodigoPostal;
                        pRetval = pRetval.Replace("{34}", objCliente.CodigoPostal);
                    }
                    catch { pRetval = pRetval.Replace("{34}", ""); }

                    TelResPago = objCliente.Telefono;
                    NifResPago = objCliente.Ruc;
                    pRetval = pRetval.Replace("{35}", objCliente.Telefono);
                    pRetval = pRetval.Replace("{36}", objCliente.Ruc);
                }
            }
        }

        private void guardaInterlocutores()
        {
            List<InterlocutorBE> lstInterlocutores = new List<InterlocutorBE>();
            InterlocutorBE objSolicitante = new InterlocutorBE();

            //SOLO PARA CODIGO POSTAL
            List<GenericBE> lstOficinas = new List<GenericBE>();
            List<GenericBE> lstTipoDocumento = new List<GenericBE>();
            List<GenericBE> lstGrupoVendedores = new List<GenericBE>();
            List<GenericBE> lstSectores = new List<GenericBE>();
            List<GenericBE> lstMotivos = new List<GenericBE>();
            List<GenericBE> lstGrupoCond = new List<GenericBE>();
            List<GenericBE> lstBloqueoEntrega = new List<GenericBE>();
            List<GenericBE> lstBloqueoFactura = new List<GenericBE>();
            List<GenericBE> lstVendedores = new List<GenericBE>();
            List<GenericBE> lstCodigoPostal = new List<GenericBE>();
            List<GenericBE> lstTipoVisita = new List<GenericBE>();
            List<GenericBE> _lvLstPrioridadEnt = new List<GenericBE>();
            ParametroBC.Instance.getDataDDL(ref lstCodigoPostal, ref lstVendedores,
                ref lstBloqueoEntrega, ref lstBloqueoFactura,
                ref _lvLstPrioridadEnt, ref lstGrupoCond, ref lstGrupoVendedores, ref lstMotivos, ref lstOficinas, ref lstSectores,
                ref lstTipoDocumento, ref lstTipoVisita);
            //**********************************************************************************
            objSolicitante.Funcion = ParametroBC.Instance.getParamValue("IlocCliente");
            objSolicitante.Cliente.Codigo = CodSolicitante;
            objSolicitante.Cliente.Descripcion = NomSolicitante;
            objSolicitante.Cliente.Direccion = DirSolicitante;
            objSolicitante.Cliente.CodigoPostal = CodpSolicitante;
            try {objSolicitante.Cliente.Ciudad = lstCodigoPostal.Find(x => x.Codigo == CodpSolicitante).Descripcion;} catch {}            
            objSolicitante.Cliente.Telefono = TelSolicitante;
            objSolicitante.Cliente.Ruc = NifSolicitante;
            objSolicitante.Cliente.Mail = mail;
            try { objSolicitante.Cliente.Distrito = lstCodigoPostal.Find(x => x.Codigo == CodpSolicitante).Descripcion.Trim(); }
            catch { }    
            
            
            lstInterlocutores.Add(objSolicitante);

            InterlocutorBE objDestMercaderia = new InterlocutorBE();
            objDestMercaderia.Funcion = ParametroBC.Instance.getParamValue("IlocDestMerc");
            objDestMercaderia.Cliente.Codigo = CodDestMerc;
            objDestMercaderia.Cliente.Descripcion = NomDestMerc;
            objDestMercaderia.Cliente.Direccion = DirDestMerc;
            objDestMercaderia.Cliente.CodigoPostal = CodpDestMerc;
            try { objDestMercaderia.Cliente.Ciudad = lstCodigoPostal.Find(x => x.Codigo == CodpDestMerc).Descripcion; }
            catch { }
            objDestMercaderia.Cliente.Telefono = TelDestMerc;
            objDestMercaderia.Cliente.Ruc = "";

            lstInterlocutores.Add(objDestMercaderia);

            InterlocutorBE objDestFactura = new InterlocutorBE();
            objDestFactura.Funcion = ParametroBC.Instance.getParamValue("IlocDestFact");
            objDestFactura.Cliente.Codigo = CodDestFact;
            objDestFactura.Cliente.Descripcion = NomDestFact;
            objDestFactura.Cliente.Direccion = DirDestFact;
            objDestFactura.Cliente.CodigoPostal = CodpDestFact;
            try
            {
                objDestFactura.Cliente.Ciudad = lstCodigoPostal.Find(x => x.Codigo == CodpDestFact).Descripcion;
            } catch {}
            objDestFactura.Cliente.Telefono = TelDestFact;
            objDestFactura.Cliente.Ruc = "";

            lstInterlocutores.Add(objDestFactura);

            InterlocutorBE objResPago = new InterlocutorBE();
            objResPago.Funcion = ParametroBC.Instance.getParamValue("IlocResPago");
            objResPago.Cliente.Codigo = CodResPago;
            objResPago.Cliente.Descripcion = NomResPago;
            objResPago.Cliente.Direccion = DirResPago;
            objResPago.Cliente.CodigoPostal = CodpResPago;
            try
            { objResPago.Cliente.Ciudad = lstCodigoPostal.Find(x => x.Codigo == CodpResPago).Descripcion; }
            catch { }
            objResPago.Cliente.Telefono = TelResPago;
            objResPago.Cliente.Ruc = NifResPago;


            lstInterlocutores.Add(objResPago);

            InterlocutorBE objAgTransporte = new InterlocutorBE();
            objAgTransporte.Funcion = ParametroBC.Instance.getParamValue("IlocAgTrans");
            objAgTransporte.Cliente.Codigo = CodAgTrans == "" ? "" : CodAgTrans.PadLeft(10, '0');
            objAgTransporte.Cliente.Descripcion = NomAgTrans;


            //rgutierrez 22.11.2011
            objAgTransporte.Cliente.Direccion = DirAgTrans;
            objAgTransporte.Cliente.CodigoPostal = CodpAgTrans;
            try
            { objAgTransporte.Cliente.Ciudad = lstCodigoPostal.Find(x => x.Codigo == CodpAgTrans).Descripcion; }
            catch { }
            objAgTransporte.Cliente.Telefono = TelAgTrans;
            objAgTransporte.Cliente.Ruc = NifAgTrans;

            lstInterlocutores.Add(objAgTransporte);

            InterlocutorBE objEncargadoComercial = new InterlocutorBE();
            objEncargadoComercial.Funcion = ParametroBC.Instance.getParamValue("IlocVendedor1");
            objEncargadoComercial.Persona.CodPersona = CodVendedor1;
            objEncargadoComercial.Persona.Descripcion = NomVendedor1;
            objEncargadoComercial.Cliente.Ruc = "";

            lstInterlocutores.Add(objEncargadoComercial);

            InterlocutorBE objVendedorWeb = new InterlocutorBE();
            objVendedorWeb.Funcion = ParametroBC.Instance.getParamValue("IlocVendedor2");
            //objVendedorWeb.Persona.CodPersona = txtCodVendedorWeb.Text;
            //objVendedorWeb.Persona.Descripcion = txtNomVendedorWeb.Text;
            objVendedorWeb.Persona.CodPersona = "";
            objVendedorWeb.Persona.Descripcion = "";
            objVendedorWeb.Cliente.Ruc = "";

            lstInterlocutores.Add(objVendedorWeb);

            InterlocutorBE objVendedor2 = new InterlocutorBE();
            objVendedor2.Funcion = ParametroBC.Instance.getParamValue("IlocVendedor3");
            objVendedor2.Persona.CodPersona = vendedor2;
            objVendedor2.Cliente.Ruc = "";

            lstInterlocutores.Add(objVendedor2);

            InterlocutorBE objVendedor3 = new InterlocutorBE();
            objVendedor3.Funcion = ParametroBC.Instance.getParamValue("IlocVendedor4");
            objVendedor3.Persona.CodPersona = vendedor3;
            objVendedor3.Cliente.Ruc = "";

            lstInterlocutores.Add(objVendedor3);

            InterlocutorBE objProfesional = new InterlocutorBE();
            objProfesional.Funcion = ParametroBC.Instance.getParamValue("IlocProfesional");
            objProfesional.Persona.CodPersona = codProfesional;
            objProfesional.Persona.Descripcion = nomProfesional;

            //rgutierrez 22.11.2011
            objProfesional.Cliente.Direccion = dirProfesional;
            objProfesional.Cliente.CodigoPostal = codPProfesional;
            objProfesional.Cliente.Ciudad = desPProfesional;
            objProfesional.Cliente.Telefono = telProfesional;
            objProfesional.Cliente.Ruc = "";

            lstInterlocutores.Add(objProfesional);

            //rgutierrez 28.12.2011
            InterlocutorBE objProfesional2 = new InterlocutorBE();
            objProfesional2.Funcion = ParametroBC.Instance.getParamValue("IlocProfesional2");
            objProfesional2.Persona.CodPersona = codProfesional2;
            objProfesional2.Persona.Descripcion = nomProfesional2;
            objProfesional2.Cliente.Direccion = dirProfesional2;
            objProfesional2.Cliente.CodigoPostal = codPProfesional2;
            objProfesional2.Cliente.Ciudad = desPProfesional2;
            objProfesional2.Cliente.Telefono = telProfesional2;
            objProfesional2.Cliente.Ruc = "";

            lstInterlocutores.Add(objProfesional2);

            objPedido.Interlocutores = lstInterlocutores;
            if (objPedido != null)
            {
                if (lstInterlocutores.Count > 0)
                {
                    Json = JsonConvert.SerializeObject(lstInterlocutores);
                    pRetval = pRetval.Replace("{37}", Json);
                }
                else
                {
                    pRetval = pRetval.Replace("{37}", "null");
                }
            }
            else
            {
                pRetval = pRetval.Replace("{37}", "null");
            }
        }

        private List<PersonaBE> buscaProfesionales(string prefixText)
        {
            List<PersonaBE> lstProfesionales = PersonaBC.Instance.listarProfesionales(prefixText);
            //se usa solo para que tenga el mismo nombre de campo
            //List<Clientes> lstClienteProfesionales = new List<Clientes>();
            //foreach (PersonaBE item in lstProfesionales)
            //{
            //    Clientes objC = new Clientes();
            //    objC.codigo = item.CodPersona;
            //    objC.nombrecliente = item.Descripcion;
            //    lstClienteProfesionales.Add(objC);
            //}

            if (lstProfesionales.Count > 0 || lstProfesionales != null)
            {
                Json = JsonConvert.SerializeObject(lstProfesionales, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
                pRetval = pRetval.Replace("{0}", "true");
                pRetval = pRetval.Replace("{1}", "");
                pRetval = pRetval.Replace("{2}", Json);
            }
            else
            {
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "No se encontraron registros.");
                pRetval = pRetval.Replace("{2}", "null");
            }
            return lstProfesionales;
        }
    }
}

internal class Clientes
{
    public string codigo { get; set; }
    public string nombrecliente { get; set; }
}